/*
 * File: $Id: mbconfig.h,v 1.15 2010/06/06 13:54:40 wolti Exp $
 */

#ifndef _MB_CONFIG_H
#define _MB_CONFIG_H

#ifdef __cplusplus
PR_BEGIN_EXTERN_C
#endif
/* ----------------------- Defines ------------------------------------------*/
/* Modbus Configuration
 *
 * Most modules in the protocol stack are completly optional and can be
 * excluded. This is specially important if target resources are very small
 * and program memory space should be saved.  */

//	If Modbus ASCII support is enabled.
#define MB_ASCII_ENABLED                        (  0 )

// If Modbus RTU support is enabled.
#define MB_RTU_ENABLED                          (  1 )

/* The character timeout value for Modbus ASCII.
 * The character timeout value is not fixed for Modbus ASCII and is therefore
 * a configuration option. It should be set to the maximum expected delay
 * time of the network.  */
#define MB_ASCII_TIMEOUT_SEC                    (  1 )

/* Timeout to wait in ASCII prior to enabling transmitter.
 * If defined the function calls vMBPortSerialDelay with the argument
 * MB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS to allow for a delay before
 * the serial transmitter is enabled. This is required because some
 * targets are so fast that there is no time between receiving and
 * transmitting the frame. If the master is to slow with enabling its
 * receiver then he will not receive the response correctly. */
#ifndef MB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS
#define MB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS    ( 0 )
#endif

/* Maximum number of Modbus functions codes the protocol stack should support.
 *
 * The maximum number of supported Modbus functions must be greater than
 * the sum of all enabled functions in this file and custom function
 * handlers. If set to small adding more functions will fail. */
#define MB_FUNC_HANDLERS_MAX                    ( 10 )

/* Number of bytes which should be allocated for the Report Slave ID command.
 * This number limits the maximum size of the additional segment in the
 * report slave id function. See eMBSetSlaveID(  ) for more information on
 * how to set this value. It is only used if MB_FUNC_OTHER_REP_SLAVEID_ENABLED
 * is set to 1.  */
#define MB_FUNC_OTHER_REP_SLAVEID_BUF          ( 32 )

// If the Report Slave ID function should be enabled.`
#define MB_FUNC_OTHER_REP_SLAVEID_ENABLED      (  1 )

// If the Read Status Register function should be enabled.




//#define MB_FUNC_DIAG_DIAGNOSTIC_ENABLED		(  1 )



// If the Read Holding Registers function should be enabled.
#define MB_FUNC_READ_HOLDING_ENABLED           (  1 )

// If the Write Single Register function should be enabled.
#define MB_FUNC_WRITE_HOLDING_ENABLED          (  1 )

// If the Write Multiple registers function should be enabled.
#define MB_FUNC_WRITE_MULTIPLE_HOLDING_ENABLED (  1 )

// If the Read/Write Multiple Registers function should be enabled.
#define MB_FUNC_READWRITE_HOLDING_ENABLED      (  0 )

#ifdef __cplusplus
    PR_END_EXTERN_C
#endif
#endif
